package com.test.gwt.mvp.client.activity;

import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.test.gwt.mvp.client.factory.ClientFactory;
import com.test.gwt.mvp.client.places.MailDetailPlace;
import com.test.gwt.mvp.client.ui.MailDetailView;
import com.test.gwt.mvp.shared.Mail;
import com.test.gwt.mvp.shared.Utils;

public class MailDetailActivity extends AbstractActivity {
	private final MailDetailView view;
	private final int mailId;

	public MailDetailActivity(MailDetailPlace place, ClientFactory clientFactory) {
		// La vue peut être un singleton
		view = clientFactory.getMailDetailView();
		// L’emplacement nous donne l’Id du courriel sélectionné
		// Si la place est nulle, on prend "1" comme valeur par défaut
		mailId = (place == null) ? 1 : Integer.valueOf(place.getMailId());
	}

	@Override
	public void start(AcceptsOneWidget container, EventBus eventBus) {
		// Le courriel est récupéré généralement via un appel RPC
		Mail mail = Utils.INSTANCE.getById(mailId);
		// La vue a été créée dans le constructeur, il nous faut l’ajouter
		container.setWidget(view);
		// On alimente les différents champs du formulaire
		view.getSender().setText(mail.getSender());
		view.getSubject().setText(mail.getSubject());
		view.getBody().setText(mail.getBody());
	}
}
